The present invention pertains to the field of software engineering for parcel shipping, and more particularly to planning the shipping of parcels, including performing routing and rating for the shipping of parcels.
Companies that provide items such as finished goods or raw materials have a lot of choice in how the items are shipped (in the sense of parcel shipping). If choices are made correctly, the shipper can realize significant savings. The choices, however, are complex enough that having to analyze options for any particular shipping requirement is likely to overwhelm the typical shipping department employee. Although making a choice in how to ship a parcel could be automated for any particular shipper (the sender, not the carrier), the cost of doing so is great enough that most shippers would be reluctant to go ahead with automating the shipping options analysis.
The principal elements of planning the shipping of a parcel or a batch of parcels are first, determining a route for the parcel or each parcel in a batch of parcels (called routing), and second, determining a rate for the parcel or for each parcel in the batch of parcels. In planning for a single parcel, only routing and rating are performed. In planning for shipping a batch of parcels, it is also desirable to examine opportunities to consolidate the parcels, and if some shipments can be consolidated, to prorate the costs of shipping each consolidated parcel (i.e. to apportion the costs of a load of several consolidated shipments of parcels among the individual parcels).
Given an overall system for managing parcel shipping, such as that disclosed in the related application, xe2x80x9cSYSTEM FOR MANAGING PARCEL SHIPPING,xe2x80x9d what is needed is a special-purpose module (utility) for determining possible routes (carrier and service) for shipping a parcel or a consolidation of parcels, considering all business rules or ad hoc shipping instructions (applying only to the shipping of a single parcel), without taking into account the cost of shipping using any particular route, i.e. without undertaking to determine a rate for a route, because that rating of a route is involved enough to merit its being performed by a separate special-purpose module.
Ideally, a routing module would be callable by other modules without its having to be permanently linked to the other modules, in the sense of a software xe2x80x9cbuild.xe2x80x9d
Accordingly, the present invention provides a router utility and corresponding method for routing a load of one or more shipments of parcels, for use in a system for managing shipping parcels that includes a shipping database and a planning engine that provides load information for the load indicating a load identifier. The router utility includes: an input module, responsive to the load information, for providing the load identifier included in the load information; and an analyzer, responsive to the load identifier, and further responsive to planning information from the shipping database, for providing a carrier and service list. The planning information from the shipping database is organized as a set of tables of records, each record including one or more fields, and each record using at least one field as an index. The set includes the following tables: an address table, for indicating an address and a route identifier (that indicates a set of routing instructions) based on an address identifier; a shipment header table, for indicating charge terms corresponding to a load identifier, and for indicating at least one address identifier; rate shop group tables, for indicating one or more routes, each route being a carrier and service; a route identifier priority table, for indicating priority for determining a route identifier based on charge terms; and routing instruction set tables, for indicating instructions for determining a route identifier or a rate shop group, based on a route identifier. (A route identifier indicates a particular set of routing instructions, and the records in the routing instruction set tables identify which route identifier to use, or whether instead a particular carrier and service or set of carriers and services are to be used.)
In a further aspect of the invention, the routing instruction set tables include a table of records with the following fields: condition fields, for indicating a condition; a label field, for indicating a label identifying another record in the table; carrier/service fields, for indicating as a routing instruction a carrier, a service, or a carrier and a service; and a rate shop group field, for indicating as a routing instruction a rate shop group identifier. In this aspect of the invention, the router applies a particular routing instruction based on whether one or more conditions corresponding to the routing instruction are true, the correspondence being made either through a label field or by including the routing instruction in a record including one of the one or more conditions.
In a still further aspect of the invention, the rate shop group tables include a rate shop list table having one or more records corresponding to a same rate shop group identifier, and the router interprets all of the records corresponding to the same rate shop group identifier in combination, thereby enabling the use of set logic in indicating a group of carriers and services to rate shop.